#pragma once

#include <string>
#include <mutex>

enum class LogLevel
{
    NONE = 0,   // 禁用所有日志
    ERROR = 1, 
    WARN = 2,
    INFO = 3,
    DEBUG = 4
};

class Logger
{
public:
    Logger(LogLevel level = LogLevel::INFO, bool consoleOutput = true, const std::string& logFile = "");

    // 写日志
    void log(LogLevel level, const std::string& message);

    // 设置日志级别
    void setLevel(LogLevel newLevel);

    // 设置日志文件
    void setLogFile(const std::string& filename);

    // 启用/禁用 控制台输出
    void setConsoleOutput(bool enable);

private:
    LogLevel level;        // 日志等级
    bool consoleOutput;    // 是否输出到控制台
    std::string logFile;   // 日志文件路径
    std::mutex mutex;      // 互斥量
};